6 #ifndef _CFEXPMODELBUILDER_H_ 7 #define _CFEXPMODELBUILDER_H_ 52 template<
typename TInCont,
typename TMoCont,
typename Enable =
void>
56 template<
typename TInCont,
typename TMoCont>
59 <TInCont, TMoCont, typename std::enable_if<std::is_base_of<ICFEXPDataContIntf , TInCont>::value &&
60 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
65 const std::string & build_proc_text,
const std::string & remove_proc_text,
const std::string & schdl_proc_text);
67 const std::string & build_proc_text,
const std::string & remove_proc_text,
const std::string & schdl_proc_text);
73 virtual bool BuildModel (
const std::string & key,
Ptr<std::vector<std::string>> fcontent,
Ptr<TInCont> data)
override;
74 virtual bool BuildModelProgress(
const std::string & key,
Ptr<std::vector<std::string>> fcontent,
Ptr<TInCont> data)
override;
76 virtual void RemoveStructure (
const std::string & key)
override;
77 virtual bool RemoveStructureProgress(
const std::string & key)
override;
79 virtual void ScheduleThreads (
size_t opt_id)
override;
80 virtual bool ScheduleThreadsProgress(
size_t opt_id)
override;
83 virtual void NetDeserializeStructure(
const std::string & key,
Ptr<t_SerializedData> ser_data)
override;
87 std::string _build_proc_text;
88 std::string _remve_proc_text;
89 std::string _schdl_proc_text;
95 input_data(
Ptr<std::vector<std::string>> fcontent,
Ptr<TInCont> container)
96 : _in_file_content(fcontent), _in_data_container(container) { }
98 std::map<std::string, Ptr<input_data>> _in_contr_map;
101 size_t _model_id_generator;
107 template<
typename TInCont,
typename TMoCont>
109 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
111 const std::string & build_proc_text,
const std::string & remove_proc_text,
const std::string & schdl_proc_text)
113 _build_proc_text(build_proc_text), _remve_proc_text(remove_proc_text), _schdl_proc_text(schdl_proc_text),
118 template<
typename TInCont,
typename TMoCont>
120 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
122 const std::string & build_proc_text,
const std::string & remove_proc_text,
const std::string & schdl_proc_text)
124 _build_proc_text(build_proc_text), _remve_proc_text(remove_proc_text), _schdl_proc_text(schdl_proc_text), _mo_container(model_cont),
131 template<
typename TInCont,
typename TMoCont>
133 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
134 ::BuildModel(
const std::string & key,
Ptr<std::vector<std::string>> fcontent,
Ptr<TInCont> data)
137 if (_in_contr_map.count(key))
147 template<
typename TInCont,
typename TMoCont>
149 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
150 ::BuildModelProgress(
const std::string & key,
Ptr<std::vector<std::string>> fcontent,
Ptr<TInCont> data)
157 template<
typename TInCont,
typename TMoCont>
159 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
160 ::RemoveStructure(
const std::string & key)
163 if (!_in_contr_map.count(key))
166 _in_contr_map.erase(_in_contr_map.find(key));
170 template<
typename TInCont,
typename TMoCont>
172 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
173 ::RemoveStructureProgress(
const std::string & key)
180 template<
typename TInCont,
typename TMoCont>
182 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
183 ::ScheduleThreads(
size_t opt_id)
186 _mo_container->ScheduleThreads(opt_id);
190 template<
typename TInCont,
typename TMoCont>
192 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
193 ::ScheduleThreadsProgress(
size_t opt_id)
200 template<
typename TInCont,
typename TMoCont>
202 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
203 ::NetSerializeStructure(
const std::string & key)
206 if (!_in_contr_map.count(key))
212 template<
typename TInCont,
typename TMoCont>
214 std::is_base_of<ICFEXPDataModelContIntf, TMoCont>::value>::type>
218 if (!_in_contr_map.count(key))
231 template<
typename TInCont,
typename TMoCont>
256 template<
typename TInCont,
typename TMoCont>
263 template<
typename TInCont,
typename TMoCont>
269 #endif // !_CFEXPMODELBUILDER_H_ Base interface of FE model builder.
Definition: FEXPModelBuilder.h:20
Definition: FEXPModelBuilder.h:53
virtual bool RemoveStructureProgress(const std::string &key) override
Definition: FEXPModelBuilder.h:243
virtual Ptr< ICFEXPDataModelContIntf > GetModelContainer() override
Definition: FEXPModelBuilder.h:71
#define FEXPCOMMON_STACAST(clsfrom, clsto, variable)
Definition: FEXPCommon.h:137
virtual ~ICFEXPModelBuilderBase()
Definition: FEXPModelBuilder.h:23
virtual Ptr< t_SerializedData > NetSerializeStructure(const std::string &key)=0
virtual void NetDeserializeStructure(const std::string &key, Ptr< t_SerializedData > ser_data)=0
virtual bool RemoveStructureProgress(const std::string &key)=0
virtual Ptr< ICFEXPDataModelContIntf > GetModelContainer()=0
virtual void RemoveStructure(const std::string &key)=0
Definition: FEXPCommon.h:276
virtual bool ScheduleThreadsProgress(size_t opt_id)=0
virtual void ScheduleThreads(size_t opt_id) override
Definition: FEXPModelBuilder.h:245
#define FEXPCOMMON_NOT_IMPLEMENTED_EX
Definition: FEXPCommon.h:144
virtual void ScheduleThreads(size_t opt_id)=0
#define FEXPCOMMON_EMPTY_STRING
Definition: FEXPCommon.h:183
virtual void RemoveStructure(const std::string &key) override
Definition: FEXPModelBuilder.h:242
Builder class for server of hybrid-parallel FEXP solver.
Definition: FEXPModelBuilder.h:232
virtual bool ScheduleThreadsProgress(size_t opt_id) override
Definition: FEXPModelBuilder.h:246
virtual bool BuildModelProgress(const std::string &key, Ptr< std::vector< std::string >> fcontent, Ptr< ICFEXPDataContIntf > data)=0
virtual ~CFEXPServerModelBuilder()
Definition: FEXPModelBuilder.h:238
#define MAP_PAIR(key, itm)
Definition: FEXPCommon.h:471
virtual ~CFEXPModelBuilder()
Definition: FEXPModelBuilder.h:68
virtual bool BuildModel(const std::string &key, Ptr< std::vector< std::string >> fcontent, Ptr< ICFEXPDataContIntf > data)=0
CFEXPServerModelBuilder()
Definition: FEXPModelBuilder.h:258
#define FEXPCOMMON_DEFAULT_VALUE
Definition: FEXPCommon.h:179
static bool RunProcedureTask(t_Procedure procedure, bool progressbar)
It runs the asynchronous task.
Definition: FEXPConcurency.cpp:12
Base interface for system container.
Definition: FEXPDataContainer.h:76
Smart pointer.
Definition: FEXPCommon.h:274